//package com.hzncc.scaffold.fdfs;
//
//import com.github.tobato.fastdfs.domain.StorePath;
//import com.github.tobato.fastdfs.exception.FdfsUnsupportStorePathException;
//import com.github.tobato.fastdfs.proto.storage.DownloadByteArray;
//import com.github.tobato.fastdfs.service.FastFileStorageClient;
//import org.apache.commons.io.FilenameUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.logging.log4j.LogManager;
//import org.apache.logging.log4j.Logger;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.ByteArrayInputStream;
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.IOException;
//import java.nio.charset.Charset;
//import java.util.ArrayList;
//import java.util.List;
//
//@Service
//public class FastDfsClient {
//    private final Logger logger = LogManager.getLogger(FastDfsClient.class);
//
//    private final FastFileStorageClient storageClient;
//    public FastDfsClient(FastFileStorageClient storageClient) {
//        this.storageClient = storageClient;
//    }
//
//    /**
//     * 上传文件
//     * @param file 文件对象
//     * @return 文件访问地址
//     * @throws IOException
//     */
//    public String uploadFile(MultipartFile file) throws IOException {
//        StorePath storePath = storageClient.uploadFile(file.getInputStream(),file.getSize(),
//                FilenameUtils.getExtension(file.getOriginalFilename()),null);
//        return getResAccessUrl(storePath);
//    }
//
//    /**
//     * 上传文件
//     * @return 文件访问地址
//     * @throws IOException
//     */
//    public String uploadFile(File file) throws IOException {
//        FileInputStream inputStream = new FileInputStream(file);
//        StorePath storePath = storageClient.uploadFile(inputStream,file.length(),
//                FilenameUtils.getExtension(file.getName()),null);
//        return getResAccessUrl(storePath);
//    }
//
//    /**
//     * 将一段字符串生成一个文件上传
//     * @param content 文件内容
//     * @param fileExtension 文件后缀名
//     * @return 上传url
//     */
//    public String uploadFile(String content, String fileExtension) {
//        byte[] buff = content.getBytes(Charset.forName("UTF-8"));
//        ByteArrayInputStream stream = new ByteArrayInputStream(buff);
//        StorePath storePath = storageClient.uploadFile(stream,buff.length, fileExtension,null);
//        return getResAccessUrl(storePath);
//    }
//
//    // 封装图片完整URL地址
//    private String getResAccessUrl(StorePath storePath) {
//        return storePath.getFullPath();
//    }
//
//    /**
//     * 下载文件
//     * @param fileUrl 文件url
//     * @return
//     */
//    public byte[]  download(String fileUrl) {
//        String group = fileUrl.substring(0, fileUrl.indexOf("/"));
//        String path = fileUrl.substring(fileUrl.indexOf("/") + 1);
//        return storageClient.downloadFile(group, path, new DownloadByteArray());
//    }
//
//    /**
//     * 删除文件
//     * @param fileUrl 文件访问地址
//     * @return
//     */
//    public void deleteFile(String fileUrl) {
//        if (StringUtils.isEmpty(fileUrl)) {
//            return;
//        }
//        try {
//            StorePath storePath = StorePath.praseFromUrl(fileUrl);
//            storageClient.deleteFile(storePath.getGroup(), storePath.getPath());
//        } catch (FdfsUnsupportStorePathException e) {
//            logger.warn(e.getMessage());
//        }
//    }
//
//
//    /**
//     * 上传文件
//     * @param files 文件对象
//     * @return 文件访问地址
//     * @throws IOException
//     */
//    public List<String> uploadFile(MultipartFile[] files) throws IOException {
//        List<String> urlList = new ArrayList<>();
//        for(MultipartFile file:files) {
//            if (file.getSize() > 0 && !file.getOriginalFilename().equals("")) {
//                StorePath storePath = storageClient.uploadFile(file.getInputStream(), file.getSize(),
//                        FilenameUtils.getExtension(file.getOriginalFilename()), null);
//                String url = getResAccessUrl(storePath);
//                urlList.add(url);
//            }
//        }
//        return urlList;
//    }
//}
